package cn.hicard.auth.service;

import java.util.List;

import cn.hicard.auth.entity.MgSource;
import cn.hicard.auth.web.Node;

/**
 * 资源管理业务接口
 * @author zhangy
 *
 */
public interface SourceService {

	/**
	 * 保存资源
	 * @param source
	 * @throws Exception
	 */
	void save(MgSource source)throws Exception;
	
	/**
	 * 修改资源
	 * @param source
	 * @throws Exception
	 */
	void update(MgSource source)throws Exception;
	
	/**
	 * 删除资源
	 * @param pkSource
	 * @throws Exception
	 */
	void delete(int pkSource)throws Exception;
	
	/**
	 * 查询资源
	 * @param pkSource
	 * @return
	 * @throws Exception
	 */
	MgSource getOne(int pkSource)throws Exception;


	/**
	 * 跟据父资源查询子资源集合
	 * @param pk父资源主键
	 * @return
	 * @throws Exception
	 */
	List<MgSource> findByParent(int pk) throws Exception;
	
	/**
	 * 从主键为[rootPk]的资源开始为作根节点，查询指定[类型]资源的树状数据结构
	 * @param rootPk
	 * @param type [类型]为空则不区分类型，从rootPk开始查询所有
	 * @return
	 * @throws Exception
	 */
	Node findNodeByType(int rootPk, String type) throws Exception;

	/**
	 * 从主键为[rootPk]的资源开始为作根节点，查询角色集合的所有资源组成的树
	 * @param roleids角色集合
	 * @return
	 */
	Node findNodeByRoles(int rootPk, List<Integer> roleids) throws Exception;
}
